package creational;
/**
 * 创建型模式之建造者模式
 * 
 * 将稳定的构建与其表示相分离，使得同样的构建过程可以创建不同的表示。
 * 
 * 主要解决在软件系统中，有时候面临着一个复杂对象的创建工作，通常由各个部分的子对象用一定的算法构成。
 * 由于需求的变化，这个复杂对象的各个部分经常面临着剧烈的变化，但是将它们组合在一起的算法却相对稳定
 * 
 * @author 关关
 *
 */
class Director {//导演类，负责封装好固定的顺序结构

    Builder builder;
    public void set(Builder b){ builder = b; }
    public void show(){
        builder.showA();
        builder.showB();
        builder.showC();
    }
}

abstract class Builder{

    public static void main(String[] args) {
        Director d=new Director();
        d.set(new A());
        d.show();
        d.set(new B());
        d.show();
    }

    public abstract void showA();
    public abstract void showB();
    public abstract void showC();
}
class A extends Builder{

    @Override
    public void showA() {

    }

    @Override
    public void showB() {

    }

    @Override
    public void showC() {

    }
}
class B extends Builder{

    @Override
    public void showA() {

    }

    @Override
    public void showB() {

    }

    @Override
    public void showC() {

    }
}

